package com.base.cn.platform.os.statistics;

import com.base.cn.platform.os.common.utils.ObjectUtils;
import com.base.cn.platform.os.common.utils.result.ResultUtil;
import lombok.extern.slf4j.Slf4j;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 日志文件内容工具类
 *
 * @author s.li
 * @date 2019/04/17
 */
@Slf4j
public class LogFileUtils {
    /**
     * 获取日志文件内容，以行内容为元素
     * @param logsFileDir 日志文件目录
     * @param fileNameList 可以使用的文件名列表
     * @param fileNameArr  目录的日志文件名
     * @param exFileName 排除的文件名
     * @return List<String> 日志文件内容
     * @throws Exception
     */
    public static List<String> getLogFileLineContextList(File logsFileDir,
                                                         List<String> fileNameList,
                                                         String[] fileNameArr,
                                                         String exFileName) throws Exception {
        List<String> logFileLineContextList = new ArrayList<>();
        for (String fileName : fileNameArr){
            File file = new File(logsFileDir,fileName);
            if(file.exists()){
                if(!fileName.equals(exFileName)){
                    fileNameList.add(fileName);
                }
                FileReader fr = new FileReader(file);
                BufferedReader bf = new BufferedReader(fr);
                String lineContext;
                // 按行读取字符串
                while ((lineContext = bf.readLine()) != null) {
                    logFileLineContextList.add(lineContext);
                }
                bf.close();
                fr.close();
            }
        }
        return logFileLineContextList;
    }

    public static void deleteLogFile(Map<String,Object> resultMap,File logsFileDir,List<String> fileNameList){
        if(ResultUtil.getSuccess(resultMap) && ObjectUtils.isNotEmpty(fileNameList)){
            for (String fileName : fileNameList){
                File file = new File(logsFileDir,fileName);
                log.info("----------------删除："+file.getPath());
                file.delete();
            }
        }
    }

}
